package cn.wolfcode.luowowo.search.service;

import cn.wolfcode.luowowo.search.query.SearchQueryObject;
import cn.wolfcode.luowowo.search.template.DestinationTemplate;
import org.springframework.data.domain.Page;
import org.springframework.data.elasticsearch.core.query.SearchQuery;

import java.util.List;

/**
 * 目的地搜索服务
 */
public interface IDestinationSearchService {

    /**
     * 添加
     * @param template
     */
    void save(DestinationTemplate template);

    /**
     * 更新
     * @param template
     */
    void update(DestinationTemplate template);

    /**
     * 删除
     */
    void delete(Long id);

    /**
     * 查单个
     */
    DestinationTemplate get(Long id);


    /**
     * 查所有
     */
    List<DestinationTemplate> list();
/**
     * 分页
     */
    Page<DestinationTemplate> query(SearchQuery qo);

    /**
     * 创建索引
     */
    void createIndex();

    /**
     * 全文搜索
     * @param qo
     * @return
     */
    List<DestinationTemplate> fullSearch(SearchQueryObject qo);

    /**
     * 通过名字获取
     * @param name
     * @return
     */
    DestinationTemplate getByName(String name);

    /**
     * 通过名字查询数据
     * @param keyword
     * @return
     */
    DestinationTemplate queryDestByName(String keyword);
}
